Motion compensated inter-frame coding has been widely adopted in various coding standards, such as MPEG-1/2/4 and H.261/H.263/H.264/AVC. While motion-compensated inter-frame coding can effectively reduce bitrate for compressed video, intra mode coding is still required to process an initial picture or to periodically insert I-pictures (or Intra-coded picture, I-picture), and the 1-pictures are inserted periodically to allow quick access to the compressed video data or to alleviate error propagation. Intra prediction exploits the spatial correlation within a picture or within a picture region. In order to further improve coding efficiency, the High-Efficiency Video Coding (HEVC) standard being developed exploits block-based spatial prediction extensively. In HEVC, multiple intra prediction modes are used to exploit spatial features and the number of intra prediction modes depends on the block size of a Prediction Unit (PU). The size of PU for intra coding can be 64×64, 32×32, 16×16, 8×8, or 4×4. The number of intra prediction modes can be as many as 35, including 33 directional prediction modes, one DC mode and one Planar mode as shown in FIG. 1. In HEVC, the number of luma intra prediction modes depends on the PU size as shown in Table 1. For PU size 4×4 or 64×64, only a subset of the 35 luma intra prediction modes is used. In order for a decoder to operate according to the luma intra prediction mode selected by the encoder, the luma intra prediction mode information has to be incorporated in the bitstream. The side information associated with the luma intra prediction mode may be substantial and therefore, it is desirable to develop schemes to improve the efficiency for coding luma intra prediction mode.
TABLE 1Block sizeNumber of Luma ModeLuma Modes64 × 6440~3 32 × 32350~3416 × 16350~348 × 8350~344 × 4180~17
In the current HEVC, a luma intra prediction mode is coded for each PU in a predictive manner based on neighboring PUs. FIG. 2 shows the configuration of neighboring PUs for predictive coding of the luma intra prediction mode adopted by the current HEVC. When the intra prediction mode of the current PU (ModeC) is coded, the mode of the left PU (ModeL) and the mode of the above PU (ModeA) are used to generate the most probable mode (MPM) for the current PU.
FIG. 3 illustrates an exemplary flow chart of predictive coding of the luma intra prediction mode according to the current HEVC. First, the luma intra prediction mode for the left block, ModeL and the luma intra prediction mode for the above block, ModeA are utilized to generate two MPMs, i.e., MPM0 and MPM1 as shown in step 310. A variable ModeC′ is initialized to be ModeC. A test is performed in step 312 to determine whether ModeC is equal to MPM0 or MPM1. If ModeA is not equal to ModeL, MPM0 and MPM1 are set to min(ModeL, ModeA) and max(ModeL, ModeA), respectively. If ModeA is equal to ModeL, MPM0 is set to ModeL, MPM1 is equal to 0 or 3, where if Model is not equal to 0, MPM1 is set to 0 and if ModeL is equal to 0, MPM1 is set to 3. If the test result in step 312 is “Yes”, i.e., ModeC is equal to MPM0 or MPM1, prev_pred_mode_flag is set to 1 and mpm_idx is utilized to indicate whether ModeC is equal to MPM0 or MPM 1. A test is performed in step 314 to check if ModeC is equal to MPM0. Accordingly, mpm_id is set to 0 if ModeC is equal to MPM0 and mpm_idx is set to 1 if ModeC is not equal to MPM0. The syntax elements prev_pred_mode_flag and mpm_idx are encoded in step 316.
If ModeC is not equal to MPM0 or MPM 1, prev_pred_mode_flag is set to 0 and the syntax is encoded as shown in step 320. In this case, ModeC is equal to one of the remaining mode as indicated by rem_intra_luma_pred_mode. Steps 322 through 328 derive rem_intra_luma_pred_mode. The rem_intra_luma_pred_mode is then coded in step 330 using CABAC with fixed length binarization. ModeA or ModeL may not be directly applied when the neighboring PU and the current PU have different block sizes. In this case, ModeA or ModeL will be mapped to a value corresponding to a subset of the luma intra prediction modes. When ModeA or ModeL is unavailable, ModeA or ModeL is set to DC mode.
The probability distribution of remaining modes usually is not uniform. The fixed length binarization or coding for rem_intra_luma_pred_mode is not suitable due to poor coding efficiency. Therefore, it is also desirable to design a new coding method to indicate which the remaining mode is the current mode.
Intra prediction mode is also applied to the chroma components. Similar to luma intra prediction, intra prediction can be applied to chroma blocks (PUs) having size from 4×4 to 32×32. Since the luma component is usually processed before the chroma components, the chroma intra prediction may take advantage of coded luma information. Accordingly, the chroma intra prediction modes being considered by a current HEVC system utilize coded luma intra prediction mode as shown in Table 2.
TABLE 2IntraPredMode[xB][yB]Xintra_chroma_pred_mode0 (PL)1 (V)2 (H)3 (DC)(4 <= X <35)0(PL)7(VER + 8)0(PL)0(PL)0(PL)0(PL)1(V)1(V)7(VER + 8)1(V)1(V)1(V)2(H)2(H)2(H)7(VER + 8)2(H)2(H)3(DC)3(DC)3(DC)3(DC)7(VER + 8)3(DC)35(LM)35(LM)35(LM)35(LM)35(LM)35(LM)36(DM)0(PL)1(V)2(H)3(DC)X
IntraPredMode[xB][yB] in Table 2 is the intra prediction mode previously derived for adjacent blocks of a corresponding block at (xB, yB). Luma-based chroma prediction Mode (LM) is the luma to chroma prediction mode where the reconstructed pixels of the luma block is used to predict the chroma intra prediction mode. DM represents Direct Mode where intraPredMode[xB][yB] is used directly as the chroma intra prediction mode. Besides LM and DM, four other modes are included in the chroma intra prediction mode set: Planar, Vertical, Horizontal and DC. When DM equals to any of these four modes, the mode corresponding to VER+8 is used to replace the redundant DM. VER+8 represents the intra prediction mode generated by rotating the Vertical mode clockwise by 8 positions. The six modes in the chroma prediction mode set are then coded with Exp-Golomb code as shown in Table 3.
TABLE 3intra_chroma_pred_modeCodeword0(Planar)1101(Vertical)11102(Horizontal)111103(DC)1111135(LM)1036(DM)0
Since the luma intra prediction mode derived from for adjacent blocks may be highly correlated to the chroma intra prediction mode, a shorted codeword “0” is assigned to the DM to achieve high coding efficiency. Codewords are assigned to the other five modes, including LM, Planer, Vertical, Horizontal, and DC modes, based on an estimated probability of occurrence, so that the more popular mode is assigned with a shorter codeword.